<?php

class GetBedrijf
{
	private $sugar_client;
	private $wsdl;
	
	/* Constructor */
	public function __Construct($arg_wsdl)
	{
		$this->wsdl = $arg_wsdl;
		$this->sugar_client = new nusoapclient($arg_wsdl, true);
	}
	
	/* Geef een array van alle bedrijven terug */
	public function getBedrijven()
	{
		$session_id = $_SESSION['session'];
		$set_entry_params = array(
								  'session' => $session_id,
								  'module_name' => 'st_Bedrijf',
								  'query' => '',
								  'order_by' => '',
								  'select_fields'=>array(
															'id',
															'name',
															'street',
															'numberi',
															'adition',
															'citytf',
															'zipcode',
															'website',
															'email',
															'phone_number',
															'description',
															'active'
														),
								  'deleted' => false
								  );
		
		//Parse de "ruwe" data naar objecten en geef deze vervolgens terug
		$parser = new Parser($this->wsdl);
		$parser->setResult($this->sugar_client->call('get_entry_list',$set_entry_params));
		
		$bedrijfArray = $parser->getBedrijfArray();
		
		$getContacten = new GetContact($this->wsdl);
		$contactenArray = $getContacten->getContacten();
		
		foreach($bedrijfArray as $bedrijf)
		{
			$bedrijf_id = $bedrijf->getId();

			$contactArray = NULL;
			
			if(sizeof($contactenArray) > 0)
			{
				$contactArray = array();
				
				foreach($contactenArray as $contact)
				{
					$contact_bedrijf_id = $contact->getBedrijf();

					if($contact_bedrijf_id == $bedrijf_id)
					{
						$contactArray[] = $contact;
					}
				}
			}
			
			$bedrijf->setContacten($contactArray);
		}
		
		return $bedrijfArray;
	}
	
	/* Geef een array van alle bedrijven terug */
	public function getBedrijf($arg_bedrijf_id)
	{
		$session_id = $_SESSION['session'];
		$set_entry_params = array(
								  'session' => $session_id,
								  'module_name' => 'st_Bedrijf',
								  'id' => $arg_bedrijf_id,
								  'select_fields'=>array(
															'id',
															'name',
															'street',
															'numberi',
															'adition',
															'citytf',
															'zipcode',
															'website',
															'email',
															'phone_number',
															'description',
															'active'
														)
								  );
		
		//Parse de "ruwe" data naar objecten en geef deze vervolgens terug
		$parser = new Parser($this->wsdl);
		
		$parser->setResult($this->sugar_client->call('get_entry',$set_entry_params));
		
		$bedrijfArray = $parser->getBedrijfArray();
		
		//Koppelen van contacten aan het bedrijf
		$getContacten = new GetContact($this->wsdl);
		$contactenArray = $getContacten->getContacten();
		
		foreach($bedrijfArray as $bedrijf)
		{
			$bedrijf_id = $bedrijf->getId();

			$contactArray = NULL;
			
			if(sizeof($contactenArray) > 0)
			{
				$contactArray = array();
				
				foreach($contactenArray as $contact)
				{
					$contact_bedrijf_id = $contact->getBedrijf();

					if($contact_bedrijf_id == $bedrijf_id)
					{
						$contactArray[] = $contact;
					}
				}
			}
			
			$bedrijf->setContacten($contactArray);
		}
		$bedrijf = $bedrijfArray[0];
		//Koppelen van stages aan het bedrijf
		$getStages = new GetStage($this->wsdl);
		$stagesArray = $getStages->getStages();
		
		$stageArray = array();
		
		foreach($bedrijf->getContacten() as $contact)
		{
			$contact_id = $contact->getId();
				
			foreach($stagesArray as $stage)
			{
				$stage_contact_id = $stage->getBedrijfsbegeleider();
				
				if($stage_contact_id == $contact_id)
				{
					$stageArray[] = $stage;
				}
			}
		}
		
		if(sizeof($stageArray)>0)
		{
			$bedrijf->setStages($stageArray);
		}
		else
		{
			$bedrijf->setStages(NULL);
		}
		
		//return bedrijf object
		return $bedrijf;
	}
}

?>